home *** CD-ROM | disk | FTP | other *** search
/ Zoom 1 / Zoom (1995)(Active Software, Ground Zero).iso / utils / u565a.dms / u565a.adf / Rexx.lha / BatchProcessNotify.isrx < prev    next >
Text File  |  1995-03-01  |  8KB  |  334 lines

  1. /* ImageStudio ARexx script **************************************/
  2.  
  3. /* Allow commands to return results */
  4.  
  5. options results
  6.  
  7. /* On error, goto ERROR:. Comment out this line if you wish to */
  8. /* perform your own error checking. */
  9.  
  10. signal on error
  11.  
  12. /* BEGIN PROGRAM *************************************************/
  13.  
  14. /* Warn the user if they are about to overwrite their current project */
  15.  
  16. IMAGEINFO_GET STEM imageinfo.
  17.  
  18. if imageinfo.changed == 1 then
  19.     REQUEST_MESSAGE TEXT '"Project has changed, continue?"',
  20.         BUTTONTEXT '"OK|Cancel"' AUTOCANCEL
  21.  
  22. /* Choose source file */
  23.  
  24. REQUEST_MESSAGE TEXT '"Choose final filename in sequence\n'||,
  25.     'on which to start the processing..."',
  26.     BUTTONTEXT '"OK|Cancel"' AUTOCANCEL
  27.  
  28. REQUEST_FILE VAR finalfile
  29.  
  30. /* Get the basefilename */
  31.  
  32. FILE_RENAME FILE '"'finalfile'"' FROM "." TO "." VAR basefile
  33. FILE_SPLIT FILE '"'basefile'"' STEM splitinfo.
  34.  
  35. basefilepart = splitinfo.filepart
  36. basepathpart = splitinfo.pathpart
  37.  
  38. /* Use separate destination directory ? */
  39.  
  40. REQUEST_MESSAGE TEXT '"Use different destination directory?"',
  41.     BUTTONTEXT '"Yes|No|Cancel"' AUTOCANCEL
  42.  
  43. if result == 1 then
  44.     REQUEST_DIR TITLE '"Choose destination directory..."' VAR destdir
  45. else
  46.     destdir = ':NONE:'
  47.  
  48. REQUEST_LIST TITLE '"Choose output format..."' STRINGS,
  49.     '"IFF-ILBM"',
  50.     '"BMP"',
  51.     '"EPS"',
  52.     '"JPEG"',
  53.     '"PCX"',
  54.     '"Targa"' STEM saveformat.
  55.  
  56. /* Set up a blank ARGS string, which we can add to */
  57.  
  58. saveargs = 'ARGS "'
  59.  
  60. /* Get any IFF-ILBM args ? */
  61.  
  62. if saveformat.string == 'IFF-ILBM' then do
  63.     /* Get a subformat */
  64.  
  65.     REQUEST_MESSAGE TEXT '"Choose ILBM format..."' BUTTONTEXT,
  66.         '"As buffer|HAM6|HAM8|EHB|Cancel"' AUTOCANCEL
  67.  
  68.     /* Store subformat */
  69.  
  70.     if result == 2 then
  71.         saveargs = saveargs||'SUBFORMAT HAM6'
  72.     else if result == 3 then
  73.         saveargs = saveargs||'SUBFORMAT HAM8'
  74.     else if result == 4 then
  75.         saveargs = saveargs||'SUBFORMAT EHB'
  76.  
  77.     /* Get the dither if not saving as buffer */
  78.  
  79.     if result ~= 1 then do
  80.         REQUEST_MESSAGE TEXT '"Choose ILBM dither..."' BUTTONTEXT,
  81.             '"None|Floyd-Steinberg|Cancel"' AUTOCANCEL
  82.  
  83.         /* Store the dither */
  84.  
  85.         if result == 2 then
  86.             saveargs = saveargs||' DITHER FS'
  87.  
  88.         end
  89.  
  90.     /* Ask whether should set screenmode of images */
  91.  
  92.     REQUEST_MESSAGE TEXT '"Set screenmode of images?"',
  93.         BUTTONTEXT '"Yes|No|Cancel"' AUTOCANCEL
  94.  
  95.     if result == 1 then do
  96.         setscreenmode = 1
  97.  
  98.         REQUEST_SCREENMODE STEM screenmode.
  99.  
  100.         imagescreenmode = screenmode.modeid
  101.  
  102.         end
  103.     else
  104.         setscreenmode = 0
  105.     end
  106. else if saveformat.string == 'EPS' then do
  107.     /* Get the DPI of the image */
  108.  
  109.     REQUEST_STRING TEXT1 '"Enter the DPI resolution of"',
  110.         TEXT2 '"the EPS files to be saved:"',
  111.         STRING 300 VAR dpiinfo
  112.  
  113.     saveargs = saveargs||dpiinfo
  114.  
  115.     /* Ask whether to save as colour or greyscale */
  116.  
  117.     REQUEST_MESSAGE TEXT '"Greyscale or colour EPS?"' BUTTONTEXT,
  118.         '"Greyscale|Colour|Cancel"' AUTOCANCEL
  119.  
  120.     if result == 2 then
  121.         saveargs = saveargs||' COLOUR'
  122.  
  123.     end
  124. else if saveformat.string == 'JPEG' then do
  125.     /* Get the DPI of the image */
  126.  
  127.     REQUEST_STRING TEXT1 '"Enter the JPEG quality setting"',
  128.         TEXT2 '"for the files to be saved."',
  129.         TEXT3 '"(Valid values 25 to 100):"',
  130.         STRING 75 VAR qualityinfo
  131.  
  132.     saveargs = saveargs||qualityinfo
  133.  
  134.     /* Ask whether to save as colour or greyscale */
  135.  
  136.     REQUEST_MESSAGE TEXT '"Greyscale or colour JPEG?"' BUTTONTEXT,
  137.         '"Greyscale|Colour|Cancel"' AUTOCANCEL
  138.  
  139.     if result == 1 then
  140.         saveargs = saveargs||' GREYSCALE'
  141.  
  142.     end
  143.  
  144. /* We may or may not have created an ARGS string. If we have, lets */
  145. /* finish it off, else lets delete it */
  146.  
  147. if saveargs == 'ARGS "' then
  148.     saveargs = ''
  149. else
  150.     saveargs = saveargs||'"'
  151.  
  152. /* Rename filenames ? */
  153.  
  154. REQUEST_MESSAGE TEXT '"Rename filenames ?"' BUTTONTEXT,
  155.     '"Yes|No|Cancel"' AUTOCANCEL
  156.  
  157. if result == 1 then do
  158.     /* Set the rename files */
  159.  
  160.     renamefiles = 1
  161.  
  162.     /* Get the rename pattern */
  163.  
  164.     REQUEST_STRING TEXT1 '"Choose the filename extension. For"',
  165.         TEXT2 '"example: . .ILBM would rename all"',
  166.         TEXT3 '"files to .ILBM, see docs for more info"',
  167.         STRING '". .'||saveformat.string||'"',
  168.         VAR renamestring
  169.     end
  170. else
  171.     renamefiles = 0
  172.  
  173. /* If we're renaming, we should ask if they want the source file */
  174. /* deleted. If we're not renaming, we should warn the user that */
  175. /* the source file will be overwritten. */
  176.  
  177. if renamefiles == 1 then do
  178.     REQUEST_MESSAGE TEXT '"Delete source files ?"',
  179.         BUTTONTEXT '"Yes|No|Cancel"' AUTOCANCEL
  180.  
  181.     if result == 1 then
  182.         deletesource = 1
  183.     else
  184.         deletesource = 0
  185.     end
  186. else if renamefiles == 0 & destdir == ':NONE:' then
  187.     REQUEST_MESSAGE TEXT '"WARNING : Source files will\nbe overwritten."',
  188.         BUTTONTEXT '"OK|Cancel"' AUTOCANCEL
  189.  
  190. /* Ask user for process(s) to apply to image before saving out */
  191.  
  192. REQUEST_STRING TITLE '"Enter processes to apply..."',
  193.     TEXT1 '"Enter the processes to apply before"',
  194.     TEXT2 '"saving out the image (separate "',
  195.     TEXT3 '"commands with semi-colon ;)"' VAR process
  196.  
  197. /* Wait for finalfile to change */
  198.  
  199. NOTIFY_FILE FILE '"'finalfile'"'
  200.  
  201. /* Get all files that match the basefile */
  202.  
  203. FILES_MATCH PATHPART '"'basepathpart'"' PATTERN '"'basefilepart||'#?"',
  204.     STEM srcfiles.
  205.  
  206. /* Loop around and convert all the files */
  207.  
  208. do l = 0 to (srcfiles.fileparts.count - 1)
  209.     /* Construct the source file */
  210.  
  211.     FILE_JOIN PATHPART '"'basepathpart'"' FILEPART,
  212.         '"'srcfiles.fileparts.l'"' VAR 'srcfile'
  213.  
  214.     /* Open the file */
  215.  
  216.     OPEN FILE '"'srcfile'"' FORCE
  217.  
  218.     /* If you wish to customize this macro to perform any operations */
  219.     /* on the image before saving it out (e.g. resizing, colour */
  220.     /* reduction etc...), add the commands here */
  221.  
  222.     interpret process
  223.  
  224.     /* Set the screenmode if neccessary */
  225.  
  226.     if setscreenmode == 1 then
  227.         IMAGEINFO_SET MODEID imagescreenmode
  228.  
  229.     /* Create the output filename */
  230.  
  231.     if destdir ~= ':NONE:' then do
  232.         /* Get the filepart of the src filepart */
  233.  
  234.         FILE_SPLIT FILE '"'srcfiles.fileparts.l'"',
  235.             STEM 'splitinfo.'
  236.  
  237.         /* Create the destfile */
  238.  
  239.         FILE_JOIN PATHPART '"'destdir'"',
  240.             FILEPART '"'splitinfo.filepart'"' VAR 'destfile'
  241.  
  242.         end
  243.     else
  244.         destfile = srcfile
  245.  
  246.     /* Rename file ? */
  247.  
  248.     if renamefiles == 1 then 
  249.         FILE_RENAME FILE '"'destfile'"' renamestring,
  250.             VAR 'destfile'
  251.  
  252.     /* Save the fileout in the new format */
  253.  
  254.     SAVE FILE '"'destfile'"' FORMAT '"'saveformat.string'"',
  255.         saveargs FORCE
  256.  
  257.     /* Delete source file (and icon) if required */
  258.  
  259.     if renamefiles == 1 & deletesource == 1 then do
  260.         /* Make sure hasn't been renamed to same name */
  261.  
  262.         if upper(srcfile) == upper(destfile) then
  263.             break
  264.  
  265.         address command 'delete <NIL: >NIL: "'srcfile.'"'
  266.  
  267.         if exists(srcfile'.info') == 1 then
  268.             address command 'delete <NIL: >NIL: "'||,
  269.                 srcfile'.info"'
  270.         end
  271.     end
  272.  
  273.  
  274. /* END PROGRAM ***************************************************/
  275.  
  276. exit
  277.  
  278. /* On ERROR */
  279.  
  280. ERROR:
  281.  
  282. /* If we get here, either an error occurred with the command's */
  283. /* execution or there was an error with the command itself. */
  284. /* In the former case, rc2 contains the error message and in */
  285. /* the latter, rc2 contains an error number. SIGL contains */
  286. /* the line number of the command which caused the jump */
  287. /* to ERROR: */
  288.  
  289. if datatype(rc2,'NUMERIC') == 1 then do
  290.     /* See if we can describe the error with a string */
  291.  
  292.     select
  293.         when rc2 == 103 then
  294.             err_string = "ERROR 103, "||,
  295.                 "out of memory at line "||SIGL
  296.         when rc2 == 114 then
  297.             err_string = "ERROR 114, "||,
  298.                 "bad command template at line "||SIGL
  299.         when rc2 == 115 then
  300.             err_string = "ERROR 115, "||,
  301.                 "bad number for /N argument at line "||SIGL
  302.         when rc2 == 116 then
  303.             err_string = "ERROR 116, "||,
  304.                 "required argument missing at line "||SIGL
  305.         when rc2 == 117 then
  306.             err_string = "ERROR 117, "||,
  307.                 "value after keywork missing at line "||SIGL
  308.         when rc2 == 118 then
  309.             err_string = "ERROR 118, "||,
  310.                 "wrong number of arguments at line "||SIGL
  311.         when rc2 == 119 then
  312.             err_string = "ERROR 119, "||,
  313.                 "unmatched quotes at line "||SIGL
  314.         when rc2 == 120 then
  315.             err_string = "ERROR 120, "||,
  316.                 "line too long at line "||SIGL
  317.         when rc2 == 236 then
  318.             err_string = "ERROR 236, "||,
  319.                 "unknown command at line "||SIGL
  320.         otherwise
  321.             err_string = "ERROR "||rc2||", at line "||SIGL
  322.         end
  323.         end
  324. else if rc2 == 'RC2' then do
  325.     err_string = "ERROR in command at line "||SIGL
  326.     end
  327. else do
  328.         err_string = rc2||", line "||SIGL
  329.         end
  330.  
  331. request_message TEXT '"'err_string'"'
  332.  
  333. exit
  334.